home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mac-Source 1994 July
/
Mac-Source_July_1994.iso
/
C and C++
/
System
/
Cursor Shake
/
Cursor Shake.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-08-10
|
1KB
|
74 lines
/*****************************************/
/* Cursor Shake 1.0 */
/* By Will Schenk */
/* I can be reached at */
/* schenkl@vax.cs.hscsyr.edu */
/* Public Domain */
/* The mouse position routines are taken */
/* From MacTutor. */
/*****************************************/
#include <SetUpA4.h>
#define Trap 0xA9DA
long oldTrapAdd;
pascal void TEInitPatch( TEHandle h );
main()
{
Handle h;
Ptr myPtr;
asm {
move.l A0, myPtr
}
RememberA0();
SetUpA4();
if(!Button()) {
h = RecoverHandle(myPtr);
DetachResource(h);
HLock( h );
oldTrapAdd = NGetTrapAddress(Trap,ToolTrap);
NSetTrapAddress(TEInitPatch,Trap,ToolTrap);
}
else
SysBeep( 30 );
RestoreA4();
}
void MousePos(newPos)
Point newPos;
{
int *MTemp;
char *CrsrNew;
int i;
MTemp = (int *) 0x828; /* Set up our globals... */
CrsrNew = (char *) 0x8CE;
/* Points are stored as (row, column) or (v, h) in memory... */
/* Set our globals... */
for (i=0;i<3;i++) {
*(MTemp+2*i) = newPos.v;
*(MTemp+2*i+1) = newPos.h;
}
*CrsrNew = -1; /* There's a new position */
}
pascal void TEInitPatch( TEHandle h )
{
Point p;
SetUpA4();
GetMouse( &p );
LocalToGlobal( &p );
p.h += Random() % 2;
p.v += Random() % 2;
MousePos( p );
CallPascal( h, oldTrapAdd );
RestoreA4();
}